package com.kgc.untils;

import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;

/**
 * Java 发送邮件 (QQ邮件版)
 */
public class JavaMailUtils {

    // 发件人邮箱账号  xxx@qq.com
    private static final String userName = "";

    /**
     * 创建邮件会话=>QQ邮箱
     *
     * @return
     */
    private static Session createSession() {
        // SMTP服务器地址
        String smtp = "smtp.qq.com";

        // 密码(授权密码) 授权码获取方法: 邮箱->账户->(POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务)->管理服务
        String password = "";

        // SMTP服务器的连接信息
        Properties props = new Properties();
        props.put("mail.smtp.host", smtp); // SMTP主机号
        props.put("mail.smtp.port", "465"); // 主机端口号
        props.put("mail.smtp.auth", "true"); // 是否需要认证
        props.put("mail.smtp.ssl.enable", "true"); // 启用SSL加密
        props.put("mail.smtp.starttls.enable", "true"); // 启用TLS加密
        props.put("mail.smtp.starttls.required", "true"); // 启用TLS请求
        // 创建Session
        // 参数1：SMTP服务器的连接信息
        // 参数2：用户认证对象(Authenticator接口的匿名实现类)
        Session session = Session.getInstance(props, new Authenticator() {
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(userName, password);
            }
        });
        // 开启调试模式
        // session.setDebug(true);
        return session;
    }

    /**
     * 发送邮件
     *
     * @param toMail   收件人地址
     * @param username 收件人账户
     */
    public static void sendMail(String toMail, String username) {
        try {
            // 1.创建Session
            Session session = JavaMailUtils.createSession();
            // 2.创建邮件对象(Message抽象类的子类对象)
            MimeMessage msg = new MimeMessage(session); // 传入session
            msg.setFrom(new InternetAddress(userName)); // 发件人
            msg.setRecipient(Message.RecipientType.TO, new InternetAddress(toMail)); // 收件人
            // msg.setRecipient(Message.RecipientType.CC, new InternetAddress("*********")); // 抄送人
            msg.setSubject("感谢您注册智慧管家,请务必查看本邮件内容", "utf-8"); // 标题
            msg.setText(String.format("亲爱的%s,感谢您注册使用智慧管家，您的账号是：%s,您的账号密码默认为：123456，请尽快前往（<a href='http://116.196.73.253/user/login'>首页</a>）进行修改哟!", toMail, username), "utf-8","html"); // 正文
            // 3.发送
            Transport.send(msg);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        JavaMailUtils.sendMail("","");
    }
}